Fix segfault in the Breadcrumb system when associated model is unloaded #454
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, when a model is unloaded, the model systems associated with that model do not get unloaded. If the systems then try to access the components of the model, they will fail. However, most systems check the validity of the model they are associated with in the
System::Configure
function and assume that if the model is valid then, it will be valid inPreUpdate/PostUpdate
functions. I think it would be nice for that assumption to hold, but right now it might not.In the case of the Breadcrumb system, the system retrieves the pose of the model at every time step in
PreUpdate
and assumes that it will be valid. However, if the model is unloaded, thePose
component will be anullptr
causing a segfault.The ideal fix would be to make sure systems are unloaded when the model gets unloaded (see #113), but until then, this PR adds a check for the validity of the model in
Breadcrumbs::PreUpdate
.